package com.ruoyi.system.dto;

import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * H5消息确认DTO
 * 用于H5用户统一确认各种类型的消息，根据消息类型自动分发处理逻辑
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Data
public class H5MsgConfirmDTO {

    private Long itemId;

    /**
     * H5用户ID
     * 可选，不传则从登录态获取
     */
    private Long h5UserId;

    /**
     * 合同签署：签名文件URL
     * 当消息类型为合同签署(3)时使用
     */
    private String signFileUrl;

    /**
     * 施工验收：提交的验收单条目列表
     * 当消息类型为验收信息(4)时使用
     */
    private List<AcceptanceEntryDTO> acceptanceEntries;

    /**
     * 验收单：验收单实例ID
     * 当消息类型为验收单(6)时使用
     */
    private Long checklistInstanceId;

    /**
     * 阶段验收：验收单填写记录列表
     * 当消息类型为阶段验收(6)时使用
     */
    private List<AcceptanceChecklistSubmitDTO.RecordDTO> checklistRecords;

    /**
     * 验收条目DTO
     * 用于施工验收确认时的具体验收项信息
     */
    @Data
    public static class AcceptanceEntryDTO {
        
        /**
         * 验收模板项ID
         * 必填，关联验收模板中的具体验收项
         */
        @NotNull(message = "验收模板项ID不能为空")
        private Long templateId;
        
        /**
         * 是否合格
         * 必填，1-合格, 0-不合格
         */
        @NotNull(message = "验收结果不能为空")
        private Integer isQualified;
        
        /**
         * 备注信息
         * 可选，用于记录验收意见或不合格原因
         */
        private String remark;
        
        /**
         * 验收图片列表
         * 可选，用于上传验收现场图片或相关附件
         */
        private List<String> images;
    }
}


